//// demo_prog/chapter4/demo4_9.c
//% LDFLAGS -lm
// 例4.9
#include <stdio.h>
#include <math.h>
int main(void)
{
    // 定义所需的变量
    double dA = 0.0, dB = 0.0, dC = 0.0;
    double dX1 = 0.0, dX2 = 0.0;
    double dDisc = 0.0;
    double dP = 0.0, dQ = 0.0;
    // 输入a, b和c
    scanf("%lf%lf%lf", &dA, &dB, &dC);
    printf("a=%f, b=%f, c=%f\n", dA, dB, dC);
    dDisc = dB * dB - 4 * dA * dC;
    // 处理不同的情况
    if (fabs(dA) < 1e-5) 
    {
        // a = 0的情况
        printf("不是二次方程\n");
    } 
    else if (fabs(dDisc) < 1e-5)
    {
        // b^2 - 4ac = 0的情况
        dX1 = -dB / (2 * dA);
        printf("有两个相等的实根：x=%f\n", dX1);
    } 
    else if (dDisc > 1e-6)
    {
        // b^2 - 4ac > 0的情况
        dX1 = (-dB + sqrt(dDisc)) / (2 * dA);
        dX2 = (-dB - sqrt(dDisc)) / (2 * dA);
        printf("有两个不同的实根，x1=%f, x2=%f\n", dX1, dX2);
    }
    else
    {
        // b^2 - 4ac < 0的情况
        dP = -dB / (2 * dA);
        dQ = sqrt(4 * dA * dC - dB * dB) / (2 * dA);
        printf("有两个共轭复根：%f+%fi, %f-%fi", dP, dQ, dP, dQ);
    }
    return 0;
}
/*
以下几组样例输入：
1 2 1
1 2 2
2 6 1
*/